package prototype

// 原型抽象
type Prototype interface {
	Clone() Prototype
}

// 具体原型 - 文档
type Document struct {
	ID       int
	Content  string
	Metadata map[string]string
}

// 实现clone方法
func (d *Document) Clone() Prototype {
	newMetaData := make(map[string]string)
	for k, v := range d.Metadata {
		newMetaData[k] = v
	}
	return &Document{
		ID:       d.ID,
		Content:  d.Content,
		Metadata: newMetaData,
	}
}
